RAMBATCH Version 1.0 Copyright 1992 Jay E. Morris P.O. Box 362271 Melbourne, FL 32926 OVERVIEW RAMBATCH is an implementation in Pascal of a concept presented in the February 1992 issue of PCComputing. To understand the need for RAMBATCH, one must first understand how DOS handles disk drives. When DOS formats a disk, floppy or hard, it divides it into sectors. Then a number of sectors are grouped into clusters. The number of sectors in a clusters depends upon the size of a disk. A 360K floppy will have a cluster size of 512 bytes, a large hard drive will have a cluster size of 2048 bytes. When DOS allocates space to a file, it does it by cluster. So a 20 byte, 150 byte and 2000 byte file would all actually take the same amount of disk space on a hard drive. DOS never assigns a partial cluster. If one uses many batch files, this problem is compounded. If there are 30 batch files with an average size of 80 bytes, the DIR command would show that these files use 2400 bytes. But in reality, since each file is allocated a minimum of 2048 bytes, 61,440 bytes of disk space is used. The more batch files, the greater the loss. RAMBATCH solves this problems by the use of one input file that contains all the batch files. This file is read in and each batch file is written to a RAM disk. Using the example above, this one file would take two clusters, or 4096 bytes, verses 61,440 for all the separate batch files. The drawback is that you must allocate some of your RAM for the RAM disk. Depending one your system, this may be less of a loss than the loss of 60,000 bytes of disk space. SETUP Initial setup involves the creation of a RAM disk in memory. All examples given here are in DOS 5.0. The DOS 5.0 RAM disk driver allows one to specify the size of the disk (default 64K), the sector size (default 512), and the number of entries (default 64). By the use of the /E switch, the disk can be created in extended memory. The /a switch will load the drive in expanded memory. The RAMDRIVE.SYS driver itself can also be loaded in high memory. To determine the minimum size RAM disk, multiply the number of batch files times the sector size. Using the example from above, 30 files time 128 is 3840 bytes. Any file over 128 bytes would require extra sectors, one for each 128 bytes. Since the minimum disk size is 16K, this is what we would use. The CONFIG.SYS line would be: DEVICEHIGH=C:\DOS\RAMDRIVE 16,128 /E If DOS 5.0 is not used, the line is: DEVICE=C:\DOS\RAMDRIVE 16,128 DOS will assign the next available drive letter to the drive. If you have drives A, B, and C, the RAM disk will be D. Next you must create the input file. The file must be named BATCH.LIS and be on the root (top) directory of the drive RAM- BATCH is running on. The first line of the file MUST be the RAM drive letter. The next line is the start of the first batch file. Each batch file starts with the key word START and the name of the batch file. The word start MUST be in caps. Each line of the batch file follows. Do not put in any blank lines unless the batch file itself requires it. Following is a short example. d: START PC.BAT @echo off c: cd \procalc halortp4 procalc %1 %2 %3 %4 %5 halortp4 -u > nul cd \ START MC.BAT @echo off c: cd\mc mc -k c: cd\ CLS START DB.BAT @echo off c: cd\ cd\dbase dbase cd\ c: cd\ cls The word start can be used in a batch file as long as it does not begin in column one or is in lowercase. There is no requirement to end the file in any special way. Finally, add a line to your AUTOEXEC.BAT file to execute RAMBATCH upon bootup. When your system boots, you will see a line indicating that RAMBATCH has created the batch files and a count of the number of batch files created. This is a double check to insure that the batch files have been created correctly. If a START keyword is out of place or not in upper case, the batch file will not be created or added to the count. Thus if the count you see is not what you think it should be, check your input file. MISC AND DISCLAIMER No warranty is expressed or implied. This software is provided as is. This is a freeware program. No remuneration is requested (but if you feel an overwhelming urge to contribute, feel free.) If you wish a copy of the source code, send $1 for hard copy or $3 for a diskette (5.25") to: Jay E. Morris P.O. Box 362271 Melbourne, FL 32936 or if you have Internet access, contact me at: morris@patrick-pims.af.mil and I'll send you the code. As a last resort, try CompuServe: 73007,3107 But I'm not there often.